import cv2
import numpy as np
import matplotlib.pyplot as plt

'''这个调用库函数了可以用的'''

'''读取图片'''
img1=cv2.imread('YOIMIYA.jpg',0)
img2=cv2.imread('YunJin.jpg',0)

f1 = np.fft.fft2(img1)
f1shift = np.fft.fftshift(f1)
f1_A = np.abs(f1shift) #取振幅
f1_P = np.angle(f1shift) #取相位
s1=20*np.log(f1_A)#便于显示
s2=f1_P

f2 = np.fft.fft2(img2)
f2shift = np.fft.fftshift(f2)
f2_A = np.abs(f2shift) #取振幅
f2_P = np.angle(f2shift) #取相位

'''利用振幅谱，相位谱，做傅里叶逆变换和杂交()'''
f11shift=np.zeros(img1.size,dtype=np.complex128)
f11shift=f1_A*(np.cos(f1_P)+1.j*np.sin(f1_P))
f11=np.fft.ifftshift(f11shift)
img11=np.abs(np.fft.ifft2(f11))
s11=(img11-np.amin(img11))/(np.amax(img11)-np.amin(img11))

f12shift=np.zeros(img1.size,dtype=np.complex128)
f12shift=f1_A*(np.cos(f2_P)+1.j*np.sin(f2_P))
f12=np.fft.ifftshift(f12shift)
img12=np.abs(np.fft.ifft2(f12))
s12=(img12-np.amin(img12))/(np.amax(img12)-np.amin(img12))

f21shift=np.zeros(img2.size,dtype=np.complex128)
f21shift=f2_A*(np.cos(f1_P)+1.j*np.sin(f1_P))
f21=np.fft.ifftshift(f21shift)
img21=np.abs(np.fft.ifft2(f21))
s21=(img21-np.amin(img21))/(np.amax(img21)-np.amin(img21))




plt.subplot(421),plt.imshow(img1,'gray'),plt.title('origial1')
plt.xticks([]),plt.yticks([])
plt.subplot(422),plt.imshow(img2,'gray'),plt.title('origial2')
plt.xticks([]),plt.yticks([])

plt.subplot(423),plt.imshow(s1,'gray'),plt.title('AM')
plt.xticks([]),plt.yticks([])
plt.subplot(424),plt.imshow(s2,'gray'),plt.title('Phase')
plt.xticks([]),plt.yticks([])

plt.subplot(425),plt.imshow(s11,'gray'),plt.title('逆变换')
plt.xticks([]),plt.yticks([])
plt.subplot(426),plt.imshow(s12,'gray'),plt.title('cross1')
plt.xticks([]),plt.yticks([])
plt.subplot(427),plt.imshow(s21,'gray'),plt.title('cross2')
plt.show()